package cn.iocoder.yudao.module.digital.controller.admin.patent.vo;

import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;
import java.util.*;
import jakarta.validation.constraints.*;
import org.springframework.format.annotation.DateTimeFormat;
import java.time.LocalDateTime;
import cn.iocoder.yudao.module.patent.dal.dataobject.authors.AuthorsDO;

@Schema(description = "管理后台 - 专利信息新增/修改 Request VO")
@Data
public class PatentSaveReqVO {

    @Schema(description = "专利主键ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "12751")
    private Integer id;

    @Schema(description = "专利名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "王五")
    @NotEmpty(message = "专利名称不能为空")
    private String patentName;

    @Schema(description = "所属单位（如计算机学院）", requiredMode = Schema.RequiredMode.REQUIRED, example = "计算机学院")
    @NotNull(message = "所属单位（如计算机学院）不能为空")
    private Integer affiliatedUnit;

    @Schema(description = "专利类型（发明专利、实用新型、外观设计）", requiredMode = Schema.RequiredMode.REQUIRED, example = "2")
    @NotNull(message = "专利类型（发明专利、实用新型、外观设计）不能为空")
    private Integer patentType;

    @Schema(description = "专利范围（国内、国外）", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotNull(message = "专利范围（国内、国外）不能为空")
    private Integer patentScope;

    @Schema(description = "专利状态（专利申请、专利公开、专利授权）", requiredMode = Schema.RequiredMode.REQUIRED, example = "2")
    @NotNull(message = "专利状态（专利申请、专利公开、专利授权）不能为空")
    private Integer patentStatus;

    @Schema(description = "申请号")
    private String applicationNumber;

    @Schema(description = "申请日期", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotNull(message = "申请日期不能为空")
    private LocalDateTime applicationDate;

    @Schema(description = "公开号")
    private String publicationNumber;

    @Schema(description = "公开日期")
    private LocalDateTime publicationDate;

    @Schema(description = "授权号", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotEmpty(message = "授权号不能为空")
    private String authorizationNumber;

    @Schema(description = "授权日期")
    private LocalDateTime authorizationDate;

    @Schema(description = "申请人")
    private String applicant;

    @Schema(description = "专利权人")
    private String patentHolder;

    @Schema(description = "是否失效（1=是，0=否）", example = "22377")
    private Boolean isInvalid;

    @Schema(description = "合作类型（独立申请、合作申请）", example = "1")
    private Integer cooperationType;

    @Schema(description = "是否为职务专利（1=是，0=否）")
    private Boolean isServicePatent;

    @Schema(description = "学校署名（第一单位/非第一单位）")
    private Integer schoolSignature;

    @Schema(description = "是否为PCT专利（1=是，0=否）")
    private Boolean isPctPatent;

    @Schema(description = "备注", example = "你猜")
    private String remark;

    @Schema(description = "预留字段1")
    private String reserved1;

    @Schema(description = "预留字段2")
    private String reserved2;

    @Schema(description = "预留字段3")
    private String reserved3;

    @Schema(description = "预留字段4")
    private String reserved4;

    @Schema(description = "预留字段5")
    private String reserved5;

    @Schema(description = "专利作者信息列表")
    private List<AuthorsDO> authorss;

}